www.gusucode.com > matlab从零到进阶程序与数据 > matlab从零到进阶程序与数据/第22章 系统级仿真工具Simulink及应用/myblksetdemo/quad_msfunc.m
function [sys,x0,str,ts,simStateCompliance] = quad_msfunc(t,x,u,flag,a,b,c) % The following outlines the general structure of an S-function. switch flag, % Initialization % case 0, [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes; % Outputs % case 3, sys=mdlOutputs(t,x,u,a,b,c); % Unhandled flags % case{1,2,4,9} sys = []; % Unexpected flags % otherwise DAStudio.error('Simulink:blocks:unhandledFlag', num2str(flag)); end %============================================================================= % mdlInitializeSizes % Return the sizes, initial conditions, and sample times for the S-function. %============================================================================= function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = -1; sizes.NumInputs = -1; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; % at least one sample time is needed sys = simsizes(sizes); % initialize the initial conditions x0 = []; str = []; % initialize the array of sample times ts = [-1 0]; % inherited sample time % speicfy that the simState for this s-function is same as the default simStateCompliance = 'DefaultSimState'; %============================================================================= % mdlOutputs % Return the block outputs. %============================================================================= function sys=mdlOutputs(t,x,u,a,b,c) sys = a*u.^2+b*u+c; %==================